﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using JXT.PrimaryKey.Batman.Collections;
using JXT.PrimaryKey.Batman.Domain.Models;
using JXT.PrimaryKey.Batman.Domain.Services;
using JXT.PrimaryKey.Batman.Domain.Specifications;
using JXT.PrimaryKey.Batman.Domain.UserSystem.Models;

namespace JXT.PrimaryKey.Batman.Domain.UserSystem.Services
{
    public interface ISystemUserService : ICachedService
    {
        SystemUser Add(SystemUser entity);

        SystemUser UpdateKey(SystemUser entity);

        void Delete(SystemUser entity);

        IPagedCollection<SystemUser> GetList(IPagedSpecification<SystemUser> specification);

        SystemStatus GetStatus(SystemUser user);

        void AddStatus(SystemUser user, SystemStatus status);

        void DeleteStatus(SystemUser user);

        bool CheckStatus(string id, string dynamicKey, string ip);

        SystemStatus Login(string id, string key, string ip);

        void Logout(string id, string dynamicKey, string ip);
    }
}
